def __repr__(self):
    return f'{self.__class__.__name__}(wheel={self.wheel}, type={self.type})'


Vehicle = type('Vehicle', (), {'wheel': 4, '__repr__': __repr__})

Bus = type('Bus', (Vehicle,), {'type': 1})
Truck = type('Truck', (Vehicle,), {'type': 2})

if __name__ == '__main__':
    bus = Bus()
    truck = Truck()
    print(bus)
    print(truck)
    print(bus.wheel)
    print(truck.wheel)
    print(bus.type)
    print(truck.type)
    print(type(bus))
    print(type(truck))
    print(isinstance(bus, Vehicle))
    print(isinstance(truck, Vehicle))
    print(issubclass(Bus, Vehicle))
    print(issubclass(Truck, Vehicle))
    print(issubclass(Truck, Bus))
    print(issubclass(Bus, Truck))
    print(issubclass(Vehicle, Truck))
    print(issubclass(Vehicle, Bus))
    print(issubclass(Vehicle, Vehicle))
    print(issubclass(Vehicle, object))
    print(issubclass(object, Vehicle))
    print(issubclass(object, object))

